/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package org.cip.esymons.colegiatura.beans;

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import org.apache.myfaces.custom.fileupload.UploadedFile;
import org.cip.esymons.colegiatura.bc.ColegiadoDelegate;
import org.cip.esymons.colegiatura.bc.ColegiadoEspecialidadDelegate;

import org.cip.esymons.colegiatura.bc.DireccionDelegate;
import org.cip.esymons.colegiatura.bc.DocumentoDelegate;
import org.cip.esymons.colegiatura.bc.DocumentoImagenDelegate;
import org.cip.esymons.colegiatura.bc.EspCapDelegate;
import org.cip.esymons.colegiatura.bc.FormacionProfesionalDelegate;
import org.cip.esymons.colegiatura.bc.GeneraCuotasDelegate;
import org.cip.esymons.colegiatura.bc.NacionalidadDelegate;
import org.cip.esymons.colegiatura.bc.PagoColegiaturaDelagate;
import org.cip.esymons.colegiatura.bc.PaisDelegate;
import org.cip.esymons.colegiatura.bc.PersonaJuridicaDelegate;
import org.cip.esymons.colegiatura.bc.PersonaNaturalDelegate;
import org.cip.esymons.colegiatura.bc.TelefonoDelegate;
import org.cip.esymons.colegiatura.bc.TituloDelegate;
import org.cip.esymons.colegiatura.bc.TransferenciaDelegate;
import org.cip.esymons.colegiatura.be.Colegiado;

import org.cip.esymons.colegiatura.be.FormacionProfesional;
import org.cip.esymons.colegiatura.be.TipoColegiado;
import org.cip.esymons.colegiatura.be.Transferencia;
import org.cip.esymons.general.be.ColegiadoEspecialidad;
import org.cip.esymons.general.be.DireccionPersona;
import org.cip.esymons.general.be.EspecialidadCapitulo;
import org.cip.esymons.general.be.Nacionalidad;
import org.cip.esymons.general.be.Pais;
import org.cip.esymons.general.be.PersonaJuridica;
import org.cip.esymons.general.be.PersonaNatural;
import org.cip.esymons.general.be.TelefonoSolicitante;
import org.cip.esymons.general.be.Titulo;
import org.cip.esymons.general.util.ControladorAbstracto;
import org.cip.esymons.tramite.be.Documento;
import org.cip.esymons.tramite.be.DocumentoImagen;

/**
 *
 * @author ADMINISTRADOR
 */
public class colegiadoTransController {

    private PersonaJuridicaDelegate perJuridicaDelegado;
    private ColegiadoDelegate colegiadoDelegado;
    private TransferenciaDelegate transDelegado;
    private ColegiadoEspecialidadDelegate colEspDelegado;
    private EspCapDelegate delegadoEspCap;
    private PersonaNaturalDelegate delegadoPersonaNatural;
    private TituloDelegate delegadoTitulo;
    private DocumentoDelegate delegadoDocumento;
    private DocumentoImagenDelegate delegadoDocumentoImagen;
    private DireccionDelegate delegadoDireccion;
    private TelefonoDelegate delegadoTelefono;
    private FormacionProfesionalDelegate delegadoFormacion;
    private GeneraCuotasDelegate delegadoCuotas;

    private Colegiado colegiado;
    private PersonaJuridica perJuridica,  personaJuridica;
    private PersonaNatural personaNatural,  persona;
    private TelefonoSolicitante telefono,  celular,  telefonoEmp;
    private DireccionPersona direccion,  direccionEmp;
    private FormacionProfesional formacion;
    private TipoColegiado tipoColegiado;
    private Nacionalidad nacion;
    private Pais pais;
    private Transferencia transferencia;
    private ColegiadoEspecialidad colEsp;
    private EspecialidadCapitulo espCap;
    private Titulo titulo;
    private String dirDocumento;
    private boolean documento;
    private Integer titCodigo;
    private String documentoBuscar;
    private String genCodigo,  autoCodigo;
    private boolean activo;
    private PagoColegiaturaDelagate delegadoPago;
    private int cip;
    private busqColXCip.Colegiado colegiadoWS;
    private Documento documentos;
    private DocumentoImagen documentoImagen;
    private String destino;
    private String tabber;
    private NacionalidadDelegate delegadoNacionalidad;
    private PaisDelegate delegadoPais;
    private Date fechaAportacion,fechaFinAporte;

    public colegiadoTransController() {

        perJuridicaDelegado = new PersonaJuridicaDelegate();
        colegiadoDelegado = new ColegiadoDelegate();
        transDelegado = new TransferenciaDelegate();
        colEspDelegado = new ColegiadoEspecialidadDelegate();
        delegadoEspCap = new EspCapDelegate();
        delegadoPersonaNatural = new PersonaNaturalDelegate();
        delegadoTitulo = new TituloDelegate();
        delegadoPago = new PagoColegiaturaDelagate();
        delegadoDocumento = new DocumentoDelegate();
        delegadoDocumentoImagen = new DocumentoImagenDelegate();
        delegadoNacionalidad = new NacionalidadDelegate();
        delegadoPais = new PaisDelegate();
        delegadoFormacion = new FormacionProfesionalDelegate();
        delegadoDireccion = new DireccionDelegate();
        delegadoTelefono = new TelefonoDelegate();
        delegadoCuotas = new GeneraCuotasDelegate();
       
        colegiado = new Colegiado();
        perJuridica = new PersonaJuridica();
        personaJuridica = new PersonaJuridica();
        direccionEmp = new DireccionPersona();
        direccion = new DireccionPersona();
        telefono = new TelefonoSolicitante();
        celular = new TelefonoSolicitante();
        telefonoEmp = new TelefonoSolicitante();
        formacion = new FormacionProfesional();
        tipoColegiado = new TipoColegiado();
        nacion = new Nacionalidad();
        pais = new Pais();
        transferencia = new Transferencia();
        colEsp = new ColegiadoEspecialidad();
        espCap = new EspecialidadCapitulo();
        persona = new PersonaNatural();
        personaNatural = new PersonaNatural();
        titulo = new Titulo();
        documentos = new Documento();
        documentoImagen = new DocumentoImagen();

        dirDocumento = "/modulos/colegiatura/archivos/documento/";
        documento = false;
        activo = false;

        colegiadoWS = new busqColXCip.Colegiado();
    }

    public GeneraCuotasDelegate getDelegadoCuotas() {
        return delegadoCuotas;
    }

    public void setDelegadoCuotas(GeneraCuotasDelegate delegadoCuotas) {
        this.delegadoCuotas = delegadoCuotas;
    }

    public Date getFechaFinAporte() {
        return fechaFinAporte;
    }

    public void setFechaFinAporte(Date fechaFinAporte) {
        this.fechaFinAporte = fechaFinAporte;
    }

    public Date getFechaAportacion() {
        return fechaAportacion;
    }

    public void setFechaAportacion(Date fechaAportacion) {
        this.fechaAportacion = fechaAportacion;
    }

    public DireccionDelegate getDelegadoDireccion() {
        return delegadoDireccion;
    }

    public void setDelegadoDireccion(DireccionDelegate delegadoDireccion) {
        this.delegadoDireccion = delegadoDireccion;
    }

    public FormacionProfesionalDelegate getDelegadoFormacion() {
        return delegadoFormacion;
    }

    public void setDelegadoFormacion(FormacionProfesionalDelegate delegadoFormacion) {
        this.delegadoFormacion = delegadoFormacion;
    }

    public TelefonoDelegate getDelegadoTelefono() {
        return delegadoTelefono;
    }

    public void setDelegadoTelefono(TelefonoDelegate delegadoTelefono) {
        this.delegadoTelefono = delegadoTelefono;
    }

    public PaisDelegate getDelegadoPais() {
        return delegadoPais;
    }

    public void setDelegadoPais(PaisDelegate delegadoPais) {
        this.delegadoPais = delegadoPais;
    }

    public NacionalidadDelegate getDelegadoNacionalidad() {
        return delegadoNacionalidad;
    }

    public void setDelegadoNacionalidad(NacionalidadDelegate delegadoNacionalidad) {
        this.delegadoNacionalidad = delegadoNacionalidad;
    }

    public String getTabber() {
        return tabber;
    }

    public void setTabber(String tabber) {
        this.tabber = tabber;
    }

    public String getDestino() {
        return destino;
    }

    public void setDestino(String destino) {
        this.destino = destino;
    }

    public DocumentoDelegate getDelegadoDocumento() {
        return delegadoDocumento;
    }

    public void setDelegadoDocumento(DocumentoDelegate delegadoDocumento) {
        this.delegadoDocumento = delegadoDocumento;
    }

    public DocumentoImagenDelegate getDelegadoDocumentoImagen() {
        return delegadoDocumentoImagen;
    }

    public void setDelegadoDocumentoImagen(DocumentoImagenDelegate delegadoDocumentoImagen) {
        this.delegadoDocumentoImagen = delegadoDocumentoImagen;
    }

    public DocumentoImagen getDocumentoImagen() {
        return documentoImagen;
    }

    public void setDocumentoImagen(DocumentoImagen documentoImagen) {
        this.documentoImagen = documentoImagen;
    }

    public Documento getDocumentos() {
        return documentos;
    }

    public void setDocumentos(Documento documentos) {
        this.documentos = documentos;
    }

    public busqColXCip.Colegiado getColegiadoWS() {
        return colegiadoWS;
    }

    public void setColegiadoWS(busqColXCip.Colegiado colegiadoWS) {
        this.colegiadoWS = colegiadoWS;
    }

    public int getCip() {
        return cip;
    }

    public void setCip(int cip) {
        this.cip = cip;
    }

    public PagoColegiaturaDelagate getDelegadoPago() {
        return delegadoPago;
    }

    public void setDelegadoPago(PagoColegiaturaDelagate delegadoPago) {
        this.delegadoPago = delegadoPago;
    }

    public String getDocumentoBuscar() {
        return documentoBuscar;
    }

    public void setDocumentoBuscar(String documentoBuscar) {
        this.documentoBuscar = documentoBuscar;
    }

    public boolean getActivo() {
        return activo;
    }

    public void setActivo(boolean activo) {
        this.activo = activo;
    }

    public String getAutoCodigo() {
        return autoCodigo;
    }

    public void setAutoCodigo(String autoCodigo) {
        this.autoCodigo = autoCodigo;
    }

    public String getGenCodigo() {
        return genCodigo;
    }

    public void setGenCodigo(String genCodigo) {
        this.genCodigo = genCodigo;
    }

    public PersonaJuridica getPersonaJuridica() {
        return personaJuridica;
    }

    public void setPersonaJuridica(PersonaJuridica personaJuridica) {
        this.personaJuridica = personaJuridica;
    }

    public TituloDelegate getDelegadoTitulo() {
        return delegadoTitulo;
    }

    public void setDelegadoTitulo(TituloDelegate delegadoTitulo) {
        this.delegadoTitulo = delegadoTitulo;
    }

    public Titulo getTitulo() {
        return titulo;
    }

    public void setTitulo(Titulo titulo) {
        this.titulo = titulo;
    }

    public Integer getTitCodigo() {
        return titCodigo;
    }

    public void setTitCodigo(Integer titCodigo) {
        this.titCodigo = titCodigo;
    }

    public PersonaNaturalDelegate getDelegadoPersonaNatural() {
        return delegadoPersonaNatural;
    }

    public void setDelegadoPersonaNatural(PersonaNaturalDelegate delegadoPersonaNatural) {
        this.delegadoPersonaNatural = delegadoPersonaNatural;
    }

    public PersonaNatural getPersonaNatural() {
        return personaNatural;
    }

    public void setPersonaNatural(PersonaNatural personaNatural) {
        this.personaNatural = personaNatural;
    }

    public EspCapDelegate getDelegadoEspCap() {
        return delegadoEspCap;
    }

    public void setDelegadoEspCap(EspCapDelegate delegadoEspCap) {
        this.delegadoEspCap = delegadoEspCap;
    }

    public EspecialidadCapitulo getEspCap() {
        return espCap;
    }

    public void setEspCap(EspecialidadCapitulo espCap) {
        this.espCap = espCap;
    }

    public boolean getDocumento() {
        return documento;
    }

    public void setDocumento(boolean documento) {
        this.documento = documento;
    }

    public TelefonoSolicitante getCelular() {
        return celular;
    }

    public void setCelular(TelefonoSolicitante celular) {
        this.celular = celular;
    }

    public Colegiado getColegiado() {
        return colegiado;
    }

    public void setColegiado(Colegiado colegiado) {
        this.colegiado = colegiado;
    }

    public ColegiadoDelegate getColegiadoDelegado() {
        return colegiadoDelegado;
    }

    public void setColegiadoDelegado(ColegiadoDelegate colegiadoDelegado) {
        this.colegiadoDelegado = colegiadoDelegado;
    }

    public DireccionPersona getDireccion() {
        return direccion;
    }

    public void setDireccion(DireccionPersona direccion) {
        this.direccion = direccion;
    }

    public FormacionProfesional getFormacion() {
        return formacion;
    }

    public void setFormacion(FormacionProfesional formacion) {
        this.formacion = formacion;
    }

    public PersonaJuridica getPerJuridica() {
        return perJuridica;
    }

    public void setPerJuridica(PersonaJuridica perJuridica) {
        this.perJuridica = perJuridica;
    }

    public PersonaJuridicaDelegate getPerJuridicaDelegado() {
        return perJuridicaDelegado;
    }

    public void setPerJuridicaDelegado(PersonaJuridicaDelegate perJuridicaDelegado) {
        this.perJuridicaDelegado = perJuridicaDelegado;
    }

    public TelefonoSolicitante getTelefono() {
        return telefono;
    }

    public void setTelefono(TelefonoSolicitante telefono) {
        this.telefono = telefono;
    }

    public TelefonoSolicitante getTelefonoEmp() {
        return telefonoEmp;
    }

    public void setTelefonoEmp(TelefonoSolicitante telefonoEmp) {
        this.telefonoEmp = telefonoEmp;
    }

    public TipoColegiado getTipoColegiado() {
        return tipoColegiado;
    }

    public void setTipoColegiado(TipoColegiado tipoColegiado) {
        this.tipoColegiado = tipoColegiado;
    }

    public Nacionalidad getNacion() {
        return nacion;
    }

    public void setNacion(Nacionalidad nacion) {
        this.nacion = nacion;
    }

    public Pais getPais() {
        return pais;
    }

    public void setPais(Pais pais) {
        this.pais = pais;
    }

    public TransferenciaDelegate getTransDelegado() {
        return transDelegado;
    }

    public void setTransDelegado(TransferenciaDelegate transDelegado) {
        this.transDelegado = transDelegado;
    }

    public Transferencia getTransferencia() {
        return transferencia;
    }

    public void setTransferencia(Transferencia transferencia) {
        this.transferencia = transferencia;
    }

    public DireccionPersona getDireccionEmp() {
        return direccionEmp;
    }

    public void setDireccionEmp(DireccionPersona direccionEmp) {
        this.direccionEmp = direccionEmp;
    }

    public ColegiadoEspecialidad getColEsp() {
        return colEsp;
    }

    public void setColEsp(ColegiadoEspecialidad colEsp) {
        this.colEsp = colEsp;
    }

    public ColegiadoEspecialidadDelegate getColEspDelegado() {
        return colEspDelegado;
    }

    public void setColEspDelegado(ColegiadoEspecialidadDelegate colEspDelegado) {
        this.colEspDelegado = colEspDelegado;
    }

    public String nuevo() {

        inicializa();
        tabber = "personal";
        return "ir_a_nuevoTrans";
    }

    public String inicializa() {

        colegiado = new Colegiado();
        perJuridica = new PersonaJuridica();
        personaJuridica = new PersonaJuridica();
        direccionEmp = new DireccionPersona();
        direccion = new DireccionPersona();
        telefono = new TelefonoSolicitante();
        celular = new TelefonoSolicitante();
        telefonoEmp = new TelefonoSolicitante();
        formacion = new FormacionProfesional();
        tipoColegiado = new TipoColegiado();
        nacion = new Nacionalidad();
        pais = new Pais();
        transferencia = new Transferencia();
        colEsp = new ColegiadoEspecialidad();
        espCap = new EspecialidadCapitulo();
        persona = new PersonaNatural();
        personaNatural = new PersonaNatural();
        titulo = new Titulo();
        documentos = new Documento();
        documentoImagen = new DocumentoImagen();

        dirDocumento = "/modulos/colegiatura/archivos/documento/";
        documento = false;
        activo = false;

        colegiadoWS = new busqColXCip.Colegiado();

        return null;

    }

    public String buscarDocumento(){

        try{
        documentos = delegadoDocumento.buscaDocumento(documentoBuscar);
        documentoImagen = delegadoDocumentoImagen.buscaDocumentoImagen(documentos);

        transferencia.setTrsdocumentoRef(documentoImagen.getDimNombre());
        transferencia.setTrsdirDocumento(documentoImagen.getDimRuta());
        }catch(Exception ex){
            return null;
        }
        documentos = new Documento();
        documentoImagen = new DocumentoImagen();
        
        return null;
    }

    public String grabar() throws IOException {

        persona = delegadoPersonaNatural.buscarXDni(personaNatural.getPerNroDNI());

        if(persona != null){

            nacion = delegadoNacionalidad.buscarPeruano();
            persona.setNacionalidad(nacion);
            persona.setPerActivo(true);
            persona.setPerTipo(1);
            //0=NO COLEGIADO; 1=COLEGIADO; 2=PREINSCRITO; 3=NUEVO
            persona.setPerfechaRegistro(new Date());
            persona.setPertieneImagen(false);
            delegadoPersonaNatural.edit(persona);

            pais = delegadoPais.buscaPeru();
            colegiado.setPais(pais);
            tipoColegiado.setTcoCodigo(1); // Transferido que viene
            colegiado.setTipoColegiado(tipoColegiado);
//
//            if(colegiado.getColnumeroCip().length()<6){
//                String numeroCIP = colegiado.getColnumeroCip();
//                switch(numeroCIP.length()){
//                    case 1 : numeroCIP = "00000"+numeroCIP; break;
//                    case 2 : numeroCIP = "0000"+numeroCIP; break;
//                    case 3 : numeroCIP = "000"+numeroCIP; break;
//                    case 4 : numeroCIP = "00"+numeroCIP; break;
//                    case 5 : numeroCIP = "0"+numeroCIP; break;
//                }
//                colegiado.setColnumeroCip(numeroCIP);
//            }
            colegiado.setColestaVivo(true);
            colegiado.setColCondicion(true);
            colegiado.setPersonaNatural(persona);
            colegiado.setSolCodigo(personaNatural.getSolCodigo());

            //creamos al colegiado
            colegiadoDelegado.create(colegiado);
        }else{

            nacion = delegadoNacionalidad.buscarPeruano();
            personaNatural.setNacionalidad(nacion);
            personaNatural.setPerActivo(true);
            personaNatural.setPerTipo(1);
            //0=NO COLEGIADO; 1=COLEGIADO; 2=PREINSCRITO; 3=NUEVO
            personaNatural.setPerfechaRegistro(new Date());
            personaNatural.setPertieneImagen(false);
            delegadoPersonaNatural.create(personaNatural);

            pais = delegadoPais.buscaPeru();
            colegiado.setPais(pais);
            tipoColegiado.setTcoCodigo(1); // Transferido
            colegiado.setTipoColegiado(tipoColegiado);
            colegiado.setColestaVivo(true);
            colegiado.setColCondicion(true);
            colegiado.setPersonaNatural(personaNatural);
            colegiado.setSolCodigo(personaNatural.getSolCodigo());
            colegiado.setColfechaAporte(fechaAportacion);
            //creamos al colegiado

//            if(colegiado.getColnumeroCip().length()<6){
//                String numeroCIP = colegiado.getColnumeroCip();
//                switch(numeroCIP.length()){
//                    case 1 : numeroCIP = "00000"+numeroCIP; break;
//                    case 2 : numeroCIP = "0000"+numeroCIP; break;
//                    case 3 : numeroCIP = "000"+numeroCIP; break;
//                    case 4 : numeroCIP = "00"+numeroCIP; break;
//                    case 5 : numeroCIP = "0"+numeroCIP; break;
//                }
//                colegiado.setColnumeroCip(numeroCIP);
//            }

            colegiadoDelegado.create(colegiado);
        }

        if(direccion.getDpeDireccion().length()>0){
            direccion.setSolCodigo(colegiado.getPersonaNatural());
            direccion.setDpeActivo(true);
            delegadoDireccion.create(direccion);
        }

        //asignamos la direccion del colegiado
        colegiadoDelegado.edit(colegiado);

        if(telefono.getTsoNumero().length()>0){
            telefono.setSolCodigo(colegiado.getPersonaNatural());
            telefono.setTsoEstado(true);
            telefono.setTsotipoTelefono("Fijo");
            delegadoTelefono.create(telefono);
        }
        if(celular.getTsoNumero().length()>0){
            celular.setSolCodigo(colegiado.getPersonaNatural());
            celular.setTsoEstado(true);
            celular.setTsotipoTelefono("Celular");
            delegadoTelefono.create(celular);
        }

        //asignamos el telefono y celular del colegiado
        colegiadoDelegado.edit(colegiado);

        formacion.setColegiado(colegiado);
        titulo = delegadoTitulo.find(titCodigo);
        formacion.setTitulo(titulo);
        formacion.setEspCodigo(titulo.getEspCodigo());
        delegadoFormacion.create(formacion);

        //asignamos su formacion profesional al colegiado
        colegiadoDelegado.edit(colegiado);

        //creamos la persona juridica
//        if(perJuridica.getEmprazonSocial().length()>0){
//            perJuridica.setEmpEsBanco(false);
//            perJuridicaDelegado.create(perJuridica);
//
//            direccionEmp.setSolCodigo(perJuridica);
//            delegadoDireccion.create(direccionEmp);
//    //        perJuridica.getListaDirecciones().add(direccionEmp);
//
//            //asiganmos su direccion a persona juridica
//            perJuridicaDelegado.edit(perJuridica);
//
//            telefonoEmp.setSolCodigo(perJuridica);
//            telefonoEmp.setTsotipoTelefono("Fijo");
//            telefonoEmp.setTsoEstado(true);
//            delegadoTelefono.create(telefonoEmp);
//            //asignamos el telefono a persona juridica
//            perJuridicaDelegado.edit(perJuridica);
//        }

        espCap = delegadoEspCap.devuelveCapitulo(formacion.getEspCodigo().getEspCodigo());
        colEsp.setColCodigo(colegiado);
        colEsp.setCesPrioridad(true);
        colEsp.setCesActivo(true);
        colEsp.setEcaCodigo(espCap);
        colEspDelegado.create(colEsp);

        //asignamos la especialidad,capitulo y consejo del colegiado
        colegiadoDelegado.edit(colegiado);

        transferencia.setColCodigo(colegiado);
        transferencia.setTrstipoTransferencia(true);
        transDelegado.create(transferencia);

        //generar el pago       
        delegadoCuotas.generarCuotas(fechaAportacion, fechaFinAporte, colegiado.getSolCodigo());      

        transferencia = new Transferencia();
        dirDocumento = "/modulos/colegiatura/archivos/documento/";        
        fechaAportacion = null;
        fechaFinAporte = null;
        documentoBuscar = "";
//        validarCodigo();
        inicializa();
        mostrarMensaje("INFO: ", "Transferencia registrada satisfactoriamente...", FacesMessage.SEVERITY_INFO);
        return null;
    }

    public String validarCodigo() {

    CodeGeneratorController control = (CodeGeneratorController) ControladorAbstracto.getBean("CodeGeneratorController");
    String codigoGenerado = control.getCodigoGenerado();

      if(genCodigo.compareTo(codigoGenerado) == 0) {

            destino = "mensaje";
            activo = false;
            inicializa();
        }else{
        activo = true;
        genCodigo = "";
        destino = null;
        }
        return null;
    }

    public String validaCodigo() {

        validarCodigo();
        return destino;
    }

    public String guardaDocumento() {

        //almacenamos el documento
        transferencia.setColCodigo(colegiado);
        transferencia.setTrsfechaTransferencia(new Date());
        transferencia.setTrsdirDocumento(dirDocumento);
        transferencia.setTrstipoTransferencia(true);
        transDelegado.create(transferencia);
        documento = true;
        dirDocumento = "/modulos/colegiatura/archivos/documento/";
        return null;
    }

    //SUBIR ARCHIVOS
    private UploadedFile upFile;
    boolean rendSuccess = false;
    boolean rendFailure = false;
    private String imagen;

    public boolean isRendFailure() {
        return rendFailure;
    }

    public void setRendFailure(boolean rendFailure) {
        this.rendFailure = rendFailure;
    }

    public boolean isRendSuccess() {
        return rendSuccess;
    }

    public void setRendSuccess(boolean rendSuccess) {
        this.rendSuccess = rendSuccess;
    }

    public UploadedFile getUpFile() {
        return upFile;
    }

    public void setUpFile(UploadedFile upFile) {
        this.upFile = upFile;
    }

    public String getImagen() {
        return imagen;
    }

    public void setImagen(String imagen) {
        this.imagen = imagen;
    }

    public String upload() throws IOException {
        try {

            InputStream stream = upFile.getInputStream();
            OutputStream out = new FileOutputStream(dirDocumento.concat(upFile.getName()));
            long size = upFile.getSize();
            byte[] buffer = new byte[(int) size];
            stream.read(buffer, 0, (int) size);
            out.write(buffer, 0, (int) size);
            stream.close();
            out.close();
            documento = true;
            guardaDocumento();            
            rendSuccess = true;
            rendFailure = false;
            setImagen(upFile.getName());
            System.out.println("File Upload Successful.");
            return "ok";

        } catch (Exception ioe) {
            System.out.println("File Upload Unsuccessful.");
            System.out.println("errorrrr" + ioe.toString());
            rendSuccess = false;
            rendFailure = true;
            return "no";
        }

    }

    //BUSCAR EN WEB SERVICE
    public String buscarColegiadoWS() throws ParseException {

        try{

            colegiadoWS = colegiadoDelegado.buscarColegiadoWS(cip);

            if(colegiadoWS != null){
            personaNatural.setPerNombres(colegiadoWS.getWs_Nomb());
            personaNatural.setPerapellidoPaterno(colegiadoWS.getWs_apePat());
            personaNatural.setPerapellidoMaterno(colegiadoWS.getWs_apeMat());

            String fechaNaci = colegiadoWS.getWs_fech_nac();
            SimpleDateFormat sdfn = new SimpleDateFormat("yyyy-MM-dd");
            Date dateNaci = sdfn.parse(fechaNaci);

            personaNatural.setPerfechaNacimiento(dateNaci);
            personaNatural.setPerNroDNI(colegiadoWS.getWs_dni());
            personaNatural.setSolcorreocip(colegiadoWS.getWs_mail_cip());

            String fechaIncorporacion = colegiadoWS.getWs_fech_incorp();
            SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd");
            Date dateIncorporacion = sdf.parse(fechaIncorporacion);

            colegiado.setColfechaIncorporacion(dateIncorporacion);
            colegiado.setColnumeroCip(String.valueOf(cip));
            }else{
                cip = 0;
               mostrarMensaje("ADVERTENCIA: ", "El colegiado no se encuentra...", FacesMessage.SEVERITY_WARN);
               mostrarMensaje("ADVERTENCIA: ", "El Sistema del Consejo Nacional se encuentra desactivado...", FacesMessage.SEVERITY_WARN);
            }
        }catch(Exception ex){
            mostrarMensaje("ADVERTENCIA: ", "El Sistema del Consejo Nacional se encuentra desactivado...", FacesMessage.SEVERITY_WARN);
        }
        return null;
    }

    public void mostrarMensaje(String resumen, String detalle, FacesMessage.Severity severidad) {
        try {
            FacesMessage fm = new FacesMessage(severidad, resumen, detalle);
            FacesContext.getCurrentInstance().addMessage(fm.toString(), fm);
        } catch (Exception e) {
            FacesMessage fm = new FacesMessage(FacesMessage.SEVERITY_ERROR, e.getMessage(), e.getMessage());
            FacesContext.getCurrentInstance().addMessage(fm.toString(), fm);
        }
    }
}
